package com.itzdm.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.itzdm.client.domain.UserSearchDto;
import com.itzdm.user.domain.dto.UserChangeDto;
import com.itzdm.user.domain.dto.UserLoginDto;
import com.itzdm.user.domain.dto.UserPwdChangeDto;
import com.itzdm.user.domain.dto.UserRegisterDto;
import com.itzdm.user.domain.po.User;
import com.itzdm.user.domain.vo.UserChangeVo;
import com.itzdm.user.domain.vo.UserGetVo;
import com.itzdm.user.domain.vo.UserLoginVo;
import com.itzdm.user.domain.vo.UserRegisterVo;
import org.springframework.web.multipart.MultipartFile;

/**
 * @作者：张德明
 * @时间：2025/4/6 14:13
 */
public interface IUserService extends IService<User> {
    /**
     * 登录
     * @param userLoginDto
     * @return
     */
    UserLoginVo login(UserLoginDto userLoginDto);

    /**
     * 注册
     * @param userRegisterDto
     * @return
     */
    UserRegisterVo register(UserRegisterDto userRegisterDto);

    /**
     * 修改密码
     * @param userPwdChangeDto
     */
    void changePassword(UserPwdChangeDto userPwdChangeDto);

    /**
     * 修改用户信息
     * @param userChangeDto
     * @return
     */
    UserChangeVo changeUserInfo(UserChangeDto userChangeDto);

    /**
     * 获取用户信息
     * @return
     */
    UserGetVo getUserInfo();

    /**
     * 根据关键字获取用户信息
     * @param keyword
     * @return
     */
    UserSearchDto getUserInfoByKeyword(String keyword);

    /**
     * 根据用户ID获取用户信息
     * @param userId
     * @return
     */
    UserSearchDto getUserInfoById(Long userId);

    /**
     * 上传头像
     * @param file
     * @return
     */
    String uploadAvatar(MultipartFile file);
}
